package backing;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

import to.Amostra;
import to.Pessoa;
import to.Propriedade;
import to.SolicitacaoDeAnalise;
import visao.ConsultaVO;
import DAO.ConsultaDAO;

@ManagedBean
@ViewScoped
public class ConsultaBacking {

	private DataModel<Amostra> listaAmostra;
	private DataModel<Pessoa> listaPessoa;
	private DataModel<Propriedade> listaPropriedade;
	private DataModel<SolicitacaoDeAnalise> listaSolicitacao;
	private DataModel<ConsultaVO> listaAmostraSolicitacao;
	private Pessoa pessoaSelecionada;
	private Propriedade propriedadeSelecionada;

	ConsultaDAO cDAO = new ConsultaDAO();

	public ConsultaBacking() {

		criaListaPessoa();

	}

	public void selecionaPropriedade(Propriedade pro) {

		propriedadeSelecionada = pro;
		criaListaAmostra(propriedadeSelecionada);

	}

	public void selecionaPessoa(Pessoa p) {

		pessoaSelecionada = p;
		criaListaPropriedade(pessoaSelecionada);
	}

	public void selecionaPessoa2(Pessoa p) {

		pessoaSelecionada = p;
		criaListaSolicitacao(pessoaSelecionada);

	}

	public void criaListaSolicitacao(Pessoa p) {

		try {

			this.listaSolicitacao = new ListDataModel<SolicitacaoDeAnalise>(
					cDAO.buscarSolicitacaoPessoa(p));

		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	public void criaListaAmostraPorSolicitacao(Integer solicitacao) {

		try {

			this.listaAmostraSolicitacao = new ListDataModel<ConsultaVO>(
					cDAO.buscarAmostraPorSolicitacao(solicitacao));

		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	public void criaListaPessoa() {

		try {

			this.listaPessoa = new ListDataModel<Pessoa>(cDAO.buscaTodos());

		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void criaListaPropriedade(Pessoa p) {

		System.out.println(p.getNome());

		try {

			this.listaPropriedade = new ListDataModel<Propriedade>(
					cDAO.buscarPropriedadePorPessoa(p));

			System.out.println(listaPropriedade.getRowCount());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void criaListaAmostra(Propriedade p) {

		try {

			this.listaAmostra = new ListDataModel<Amostra>(
					cDAO.buscarAmostraPorPropriedade(p));

		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	public DataModel<Amostra> getListaAmostra() {
		return listaAmostra;
	}

	public void setListaAmostra(DataModel<Amostra> listaAmostra) {
		this.listaAmostra = listaAmostra;
	}

	public DataModel<Pessoa> getListaPessoa() {
		return listaPessoa;
	}

	public void setListaPessoa(DataModel<Pessoa> listaPessoa) {
		this.listaPessoa = listaPessoa;
	}

	public DataModel<Propriedade> getListaPropriedade() {
		return listaPropriedade;
	}

	public void setListaPropriedade(DataModel<Propriedade> listaPropriedade) {
		this.listaPropriedade = listaPropriedade;
	}

	public ConsultaDAO getcDAO() {
		return cDAO;
	}

	public void setcDAO(ConsultaDAO cDAO) {
		this.cDAO = cDAO;
	}

	public Pessoa getPessoaSelecionada() {
		return pessoaSelecionada;
	}

	public void setPessoaSelecionada(Pessoa pessoaSelecionada) {
		this.pessoaSelecionada = pessoaSelecionada;
	}

	public Propriedade getPropriedadeSelecionada() {
		return propriedadeSelecionada;
	}

	public void setPropriedadeSelecionada(Propriedade propriedadeSelecionada) {
		this.propriedadeSelecionada = propriedadeSelecionada;
	}

	public DataModel<SolicitacaoDeAnalise> getListaSolicitacao() {
		return listaSolicitacao;
	}

	public void setListaSolicitacao(
			DataModel<SolicitacaoDeAnalise> listaSolicitacao) {
		this.listaSolicitacao = listaSolicitacao;
	}

	public DataModel<ConsultaVO> getListaAmostraSolicitacao() {
		return listaAmostraSolicitacao;
	}

	public void setListaAmostraSolicitacao(
			DataModel<ConsultaVO> listaAmostraSolicitacao) {
		this.listaAmostraSolicitacao = listaAmostraSolicitacao;
	}

}
